package com.galen.manual.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.galen.manual.dto.SettlementCreateDTO;
import com.galen.manual.dto.SettlementQueryDTO;
import com.galen.manual.vo.SettlementListVO;
import com.galen.manual.vo.SettlementVO;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

public interface SettlementService {

    /**
     * 获取结算单列表
     */
    Page<SettlementListVO> getSettlementPage(SettlementQueryDTO queryDTO);

    /**
     * 获取用户结算单列表
     */
    Page<SettlementListVO> getUserSettlementPage(Long userId, SettlementQueryDTO queryDTO);

    /**
     * 获取结算单详情
     */
    SettlementVO getSettlementDetail(Long id);

    /**
     * 创建结算单
     */
    Long createSettlement(SettlementCreateDTO createDTO);

    /**
     * 自动生成结算单（基于完成的任务）
     */
    Long generateSettlement(Long userId, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 确认结算单
     */
    void confirmSettlement(Long id);

    /**
     * 支付结算单
     */
    void paySettlement(Long id, String paymentMethod);

    /**
     * 批量更新结算状态
     */
    void updateSettlementStatusBatch(List<Long> settlementIds, Integer status);

    /**
     * 获取用户结算总金额
     */
    BigDecimal getUserTotalSettlementAmount(Long userId);

    /**
     * 生成结算单号
     */
    String generateSettlementNumber();
}